home *** CD-ROM | disk | FTP | other *** search
- Path: morgan.com!usenet
- From: Chris Laffra <laffra@ms.com>
- Newsgroups: comp.lang.java,comp.lang.c++
- Subject: FREE: C++ to Java translator (fix in uuencoded text)
- Date: Thu, 04 Apr 1996 13:59:20 -0500
- Organization: Morgan Stanley
- Message-ID: <31641C08.2039@ms.com>
- NNTP-Posting-Host: cal.morgan.com
- Mime-Version: 1.0
- Content-Type: text/plain; charset=us-ascii
- Content-Transfer-Encoding: 7bit
- X-Mailer: Mozilla 2.0 (X11; I; SunOS 5.4 sun4m)
-
- [The previous posting had a corrupted uuencode file]
-
- c2j is a C++ to Java translator that translates C++ code to Java code.
- The parser is written in C++, because I wrote it before I ever heard of
- Java...
- The input to c2j must consist of:
-
- - one .H file, containing one or more C++ class definitions.
- - one .C file, containing all method bodies referenced in the .H
- file.
-
- c2j is basically a shell-script that calls sed, a C++-to-Java
- translator,
- and the C pre-processor to do all the weaving of moving methods into one
- Java class definition.
-
- This parser currently uses a shell script and a Unix utility called
- "sed".
- When you have access to Unix utilities on a Windows PC (like the MKS
- toolkit), the parser could also be used. However, that setup has not
- been
- tested, as I did not have a strong incentive to do this because we have
- plenty Unix machines available at Morgan Stanley.
-
- It should be pretty simple to make this thing work on DOS-only tools.
- If someone does this, please let me know.
-
- Different problems that are tackled by this parser:
-
- - C++ can have a header file with a class declaration and a member
- function given in another file (typically a .C or .cpp file),
- Java has all the methods "inlined" in the class definition.
-
- - Data types are incompatible (unsigned versus int, for instance)
-
- - Pointer references (->) need to be translated into refs (.)
-
- - Access (public,protected,private) is done by region in C++, and
- is per method in Java.
-
- - Print statements to cerr and cout, which are to be translated into
- calls to System.out.print, and System.err.print.
-
- - Statements with "delete object;" need to be translated into
- "object = null;" to render a similar effect. Note that these
- assignments are not necessary at all in a destructor, as we will
- lose the reference to the object automatically.
-
- - Overloaded operators in a class definition are meaningless in Java.
-
- - C++ has multiple inheritance. Java has single inheritance and
- interfaces. In the case of multiple inheritance, we need to make
- a decision.
-
- Still to be done:
-
- - Variable declarations on the stack are not recognized and handled.
-
- - Overloaded operators in the code.
-
- - Templates.
-
- - Global variables are collected and put into the first class found
- in the .H file. Something goes wrong during collection or writing,
- and this class might not be the right location after all.
-
- - Sometimes the parser has problems with method parameters
- (especially with constructors). Keep the .H and .C file handy...
-
- - Documentation (no time...)
-
-
- C2j translates roughly about 85-95 percent of the code correctly. It
- saves
- me a lot of editing time (inlining all methods, translating simple
- types,
- removing &'s everywhere, changing -> into ., etc.
- Just run it and see what it does for you...
-
- We have decided to put this parser in the public domain. Use it at your
- own risk, and if you make any changes (especially improvements), tell
- us!
- We hope that this utility is useful for you and the rest of the C++/Java
- community.
-
- Sorry for sending code like this, but we do not have a publicly
- accessible
- site for depositing source code.
-
- Chris Laffra
- -------------------------------------------------------------------
- Morgan Stanley, 750 Seventh Avenue (between 49 & 50), NYC, NY 10019
- Email: laffra@ms.com, Tel: (212) 762 2223, Fax: (212) 762 0520
- -------------------------------------------------------------------
-
- Save this posting in a file, and run uudecode on that file,
- then execute:
-
- uncompress c2j.tar.Z
- tar xvf c2j.tar
- cd c2j
- make
-
- The makefile uses the Lucid compiler, replace it with any other
- C++ compiler you use.
-
- ===============================================
-
- begin 664 c2j.tar.Z
- M'YV08V2H>0&@H,"!,J7,BPH<.'$!'"@$$#QHT;-0!,A"'C1HP;&C?&H$$CM
- MY,:3$S7:B#'#HHT:'T%.C"%C1@V0&2/JW,FSI\\Z<^B$D1.231@S9N2$\:FPM
- MS1LY9\*X89H094JK,:AJW<JUJ]>O 0<V";.FC)DT;,I\7<OV((P8$VV0--GQM
- MH\FW<ZURM"E#)4N7-6;,D(GW;5\8;1,K5@A4*-&)1I$J]>H4JE2O>N_.7,RYM
- ML^>V(T*+'DVZM.G3J%.K7JU@1&L0(,+"GDT;1 X;+RCFIC%["!HY:>: 8'(TM
- M:9C6KT$,>0,G#_ S:.B 0#$F!8@8.7+4:(']-H@F3Z.Z 3%%J)NT>4"84/[&M
- M!0L02=R,<0$B"!LV(*2D@4Y'N)0R<Y0AAQUED.$"<B/ !H6 ;00W1QIOC$?'M
- M&R 5<9[8S"7QWM.D9&&&1N"(!49('@8%'!BU$%'&2#0@49P(,SQAAETW#%4M
- M&<F-"$(:_97XQAAUM%&&&T+1 >%X9CP%@A-/.-'"$$\TT4014@R11!!,@ !'M
- M'7+ \4: PNEX!X]HO*%B<F:4P2*,: A8AACIG:$4D05J*<<;=J1!1ITNAB&=M
- MBS!FV-QST8'@QAM&CH%C@B+" 4<90PF7QGAAW!<;<VD 2!\4:841X*5$AC&&M
- M=&6T$09:.H 0F7% M#&'"QFV@::29G#IHH"7#KI?H3JRD8:B;CSHQAD[NI&DM
- M'*8:&>&!KC':Q!-2'!&$$^11,2T3163Q71!+%#'%DD_D5P044GA;A!/64I%$M
- MD]]""\(504@AQ;3J>EN?$$]4004(5"!1!'E5)&&M$$DP(7 6R3UA!+]()/'MM
- M% I3 6^Y[Q4AL+]2@% $%N1ZVV[&230!A<%%$/%>$DX,P4051*!\! A"Z ONM
- MO@8W(7#)R5$1;K__ACQR$B6_&^^\Z +=[L)35HD$O4$0;# 56;QGA,!.> R"M
- M$>X&D1P4\:H[1!5,Q L"%%5( <434Q3QGKM,.HFR$5*X7,24Z-+W;+335GMMM
- MMN0MS4263.XKQ+\&-XUM<EAG/*VV1 311!!'V#M%%48806700FAK\!#GIOUOM
- M$-\&(>[D3.RK, A53.'R>\^V;$06+H, ;7(M3T%%W#&KZ\3+_3I,7L03_^NNM
- MP-\206425@2AKA7>,KMUIY_*81:N$[;8IKA!$#$E"&>EY?QJX(<O_OBG(=@BM
- M@"N2.*:+P]4QAIZ7M@$'6KA&R$:(<Y19!QOJ/[4&".M#@XC<D!Y$M4D.UC,3M
- M=%S 0 21[X$0C*!H%* .$1*0*FRH!P") <7#$$!"6##&,8 @A902(,<+"&QM
- M4"@@#X)0-BR4@P(^0\,:VO"&.+QA6%Y0KNQ-*8= -,A;XI*7B=2%,#,IXDG@M
- M$H.5^*4E-WA)2P[SEAG(P"Z(":(6%]*8H12E.)/I2F7$@QFK:.8M6TRC&KDBM
- MP3:Z4344#,M[;(,;W5!DCKX!CG"((YGC*& YNN+/=*ISG>QLISLV^$YXI$(>M
- M\Z!'/>QQ#WSD0Q_[X$<__/$/@ 1$( -1<$'(<M"16D0A"V%(0QQZ@X= ]!X=M
- MF8@.*%(1BP E'!G1R$;24X".>"0<,OPH2$,JTBB/!2XG04E*5+(2EK3$)2^!M
- M:8#J(Y.9Z*" -*U). =\4YSFE#X[X4E/?$*#GZP7* T12CJ'2A2.PN H2&VPM
- M6"*RE* R]:JQ08]%&0K5J$!0JE.Q(56K4DJK7A6K:M+*5@?,E7-V)9U>_6I(M
- MPB+6I(Z5K",=2 %WDQ:U;+<W;3VN6]]BDK@ZEC9T*6]=3OB8T.1%+Z/=*U_[M
- MXAG !-:T@AU, :?KW<. %R^U:>QB5-(8Q\HU!97ZC&0F@T_*5M:RW<%,9H$;M
- M3LAN1@0%Z(QA/1,94E=*M'H=[3O)7)I)G78PJ5'-:HFKCP*X)@6O@4UL9#,;M
- MVGS*MB:UX&UQV]W<SD4%NT%+HWIS K:T-06_ >X)@B/<E81PN+0N#@2->USDM
- M'D8YRY6+"##37!(XE](B?"YTHP.;Z1:6NM5]YPFN@YU39U>[VR4A=['3Z>^,M
- M(+&>R@YD5"C>\9*WO.91\(W #6YHXBB0'85).2M8 2E!H(0PV"$,+9K3'(PRM
- M(03VZ4_2I2Z D*O<#.UIN<U][J7V=" J7&]26Y).&QH#J@<%!00ST@$%9],"M
- M^+J!12Y O?H=\I036I2Q(H0BY14&18-(;FQ,<H<>FF6_RHK6 >BKWWQ.X3]M
- MIJ6_0OGOL.*)'R&Y2)4@$(,JZ0D"Z:5)>O*ITZ2LAU_]=J\,%Y4-C,3@J5]5M
- MZGXBBE&;[M.".8P!.'#XDSBE,X8;U[) K>1N"R;4@O!"%Y92F:Z?GL("7;J!M
- M1+=2CIW*T (XW$E1"U92]7S)818#$%)YVO",0."4-!/+PV4B@Z2(1"$!*\#)M
- M"?84@\_B!AY9E(+FA5$,8\,E%-,!QQ8Z;O[*8"D? [FA5\YQ%?J,APH9R5=TM
- M2$^1[U,G$02(#"(XT!7:-)X\F D$XB20B$8((.%4;])IJ+2*T.+G[48HQU>8M
- ME"_O(!PH5!@%OBJ+F9NPA"DH8$)O8,,:>)2"]V1YT!G:'XDJ):,0L\A"!@(!M
- M$MYPAS(02 [.'G*,RD"'.L !U9XR%**L/:1CHP_)(A).$DH$OW2B6]70/5&$M
- M))IB(J5!U6.F$"VM760+G?G>.()#6HB4'EA7VE1C>-%]P_1<M(1!#&D1D73 M
- M8YGQE$<JZ+EH$J23/S/QS]I;ID.F8Y0&^66\>J82]L !M>$[^,^^D$6;"<^3M
- M'F2SH9X*2((98O0&(0G81]NEY7L4#JE/I46]+%K#H>YP4040X4,G#J8W,5XJM
- M5XO[1BT2U1K20B(XD5,X,92O B1\X.XR,M4L@FZ;PK G!+X8@&3*\1@4S."]M
- M#\5/H]01=(74!C$(:.VTJ95\'@R",_Q[2/"4B@%Q=7<49'I^F\8Q=#T(7P3"M
- MRE$6+D.S$3\;/(LS3);*,IQ5*1P13,I7]P4U/+/L]P67J,%]?C!]Y@N;^A+!M
- M3T_.PZ/")+UBQ<J"1N+Z=.H0K/W$'@3?G@-0BD6']Q!S4D&1BJ)2P/L2CNT-M
- MDUH1 DWLIA0+!P4M\(%U[LLG"AD^NE'6+HG"3R$3G]\%W"=]?8/ :MNC8$L8M
- M]RLLX&6(4@:C@F1>]F]^(GK&Y2/W%6+I(3V.=VLKUG:M=&6D!QN"ABNK-W_CM
- MX607)6%0 !Q$$B-%4BK!Y&H4HBAR@$ Z$FW5!T O$G$B4GS5\WY0%BSR1WT4M
- MDH&Q863+-05Y$!2EX@+3Y ()2"072")"2(1MX ("TD%)2 <AV'N-M(!"0B3"M
- M$4 @( )[\G0#)@9J8(!TL ,B8"AJ@F7N-TO9M8 >."$^* )O((9D" (]8"C[M
- MPP9FN%PH5G<Y]B -8A0(9!9I,BKTX00%:#WC="N?XH-ZYGQ9V"-@9V_W!69SM
- M,!3I,4XW%GFW=R+N4UVMM(4L,B;WX8-L\"6S=#WDAV**LEQ9-H=CN$]AH")%M
- M!WB9EP=5Z'U/\&VG2'=UPAP",F7OM&+057M[YF"!5WQ"(A4 EA:VMV(@Z(/ZM
- MQUWH)ASKQ09&PG3%<D \HGTPQES.)7?I%E$9-RG<:!ZM."(^&'X"8@:BHBF3M
- M9&9%]BEK=HW96(YN<([>^![=AH;MQV9D@2.U 5U[\CX/LBP45!YH@1\WR"*^M
- M=%]J)V%6,!1I<'$95Y"""'@1(ARWEF79-P;_,XGK)CT9<@9]I@=UHB/B=&5DM
- MEXOUM8L"THM[0B+ J!35-6?RJ$K?V'WU106EHG +^"H\"0)'<(HTAA_/!1P6M
- MN5U@ER&<=H#3%FGIQ8-F=A8;1&1\QSUF@H&UL6)9EE^A1Q]34'3D)G'$<@9OM
- ML%UW<"<;1@9< F"7\I2,IR1KZ6?#4F4#&6D#9XQLQE#J)ATXJ(I^>8I%QGA'M
- M(7X<YI+D099&(B1>QR*#=GI;EQ:N@G?LTX%:\G<>)B#G!R"/\CXWE@<^R(7YM
- MY(FC\A0I0!]+H";G]I7ZI2.<=W<K20:XV$#32 2_%(D:.1XH<"@MTG(PQD#YM
- M-W+PIX-!66(*A ::)V(J @(XL!W:H24" BS2L6:TIY.7TH)D>#_T09R72"!SM
- MH !"DF.G6)U#5R!V22R-R2(H\'H:1BR;V(%SX&QM:"0;!HC:>'D 4F72TV9PM
- M:0(G(!S>)B!Y< ?9A"$KZ7@;EGY4*4GD-A\@<&?L)0?,MR.01B(!,HKBQB-(M
- M)QS$9&IUP$ 7=04L G>W]SXSN5Q3.7"#YI77 X"^0D*^9"J30A]5\"D<.DX@M
- M*D/<-AYZM 9+N"-#!Z( *6Q2H6D)NETHX)D&6)'WD1XM1X $$HEST&SG8RE M
- M$0(41**H!HR**&0P,FN8!J7"82&U@A\?>FHZDF72\U[6>3U.I@"QLEZYAXL4M
- ME$<PPD?&H0 MT*=^^J> &JB".JB$6JB&V@(8M4@>YTAE$"(8 0/D,:!$(D!!M
- M0"!N4 ?L:7@UHB;C00,Y $DU -6Z@19, 3O0:K7,1,YH !%0*/_I"I@% 8#M
- M!2M%-T?\PFBI@@)7) /6$44R (R$*PS8*M7$P9XD*N[VJLV\*LP4 ,R -\M
- M>JC2.JW4>J@SM$;8FJW:NJW<VJU@(1 O$!;>ZAE#9!$UD!$;<41W,1(EH1=RM
- M<:Y/!!@S0 .$01-1)!/CBD-=]!@P$%!+(4:*6D8H<499D:\&FT8C$ (O( :3M
- M\@+YTQK"%;%M%*$)DARR41NPD0"WL1N[T1N_D:>Q^AK) 4@+)4C481W=<4C9M
- MD4@<)QY7>!Z-"DG+(4GQ :&6E!\,I4D<U$G,0K$*PB"BU)&E%""GU!RIM$HAM
- MXDK! 4MID"(K<G9$=TLWDB.1QDL^ B2ZR7C$U#9/$B5)HTQ9LB5=@HIA$FD!M
- M-$UHHB8-F$UF)R=2T4U2"DY8)FY[:4Y^F4X/E2/M%"F1)T^8 H^<TG3X%"%"M
- ML4_]A"JPVD>S6E",0DRU(@>W@D""4K*\$FDQ"E%P.5%/45$(6;'.\E=YPU&"M
- MQ3<?92\B52XDQ5<GQ2ZWQ54M92]- U-8-5,#8U-0X[.RLS"R!3&T%3P5 U09M
- MLS$D951:!31)A3(JPS*QDSLS(U4V0P4XPRA7)5-'9;RN6S3V<CI?*U:U^S11M
- M<S5G5517DS5;TS6;]589$U=GDS9KDS%<BU=R0S=]=5IXLU'6,KJ$95C-.SA2M
- M93C_@CA9@ZJ1!3F24UF7@UF9(U6<Y3GU 5I$)5JYBSJJLSNL@UI)\#JQ,SN,M
- MTEJXHR^QU3 [U;NV-3RY!5F[=5+,,P4]^SR"6V+38UT"=ST]I#W_\F(KG""!M
- M5DL[AA^.E@9!YL)Q4 =IT*:I(K*, AL>(@=N$ 9"\AZ?%J0C-!W==@+%9S_IM
- M 11PF645YF5<1H"6B)I&++%B_$ 1J@!" #HEDP12T -@D,1+/)XD -@0$% M
- M$09G4 8H8!U[(*?CQ ,\< )%H# GP'MU?,>I(AO&^,8X@G@QQR+29X/B=G<\M
- MD,A,7 8^ )8Z,LE\I\B77&%E@ =+.WLOTDM#3(9/8:>P85XM%GHZ9G(DDD\9M
- M)B'7PY<8^7=S.72TQW?;1:0V4H)P"!LY*&4K0A]&@% ,\A074F:8*6(>LETEM
- M)VTHYRM$Z('\1";4<SV(A\E7]@)*$IOT<U&!; 0*T <4]"'G\UXDD" M4 9QM
- M +0>BMND(&%C"-GH0#FO 4@$ (E1")?\ 5A\05J$([]# )=<&RDEH%ML 9)M
- M# +]_,\!_5S]7$UI0$'7YR,9B"PE-'0-+1 +=!?\ (JD('FO"+OU0)#1P)IM
- MD%\9",\1BK$&6"9=* (^R$\11R$B($<@8 6<.4HQX (P$ ;OL;%O\0(R4 ,RM
- M[=(UW84D>TZ#A+*&Q!TKJT@=][*/M!XS>S*4=-2U\=(V?;.8%!TZRTD%0A\RM
- M/=-<'=-FG=0BD,-16R--299;F'<$&1Q^!YP=I-6T<=8M,!XB<'4D0J320W=FM
- M9B)U+20N&&E%5FIJRFH_S",_,!UY\ )N8!UX/1N!32)X,-/SR"(D4&DKE@<JM
- M8!T[L ,@$-JP\<D<&@.D#2"BTGVS<=8B4-FGK=8H!)<O)AQ<( (HG5^Y#4T@M
- MD-N[/02Y+=LT#=.Q[=JPX1H8FR!99I7O94&V1XKX0:&44B)2<<=W,GV?%B,_M
- MYL,QF&X<&LS:-=,)LHD_ B3::7[P-70BP'P/8I(%<H;TUX7A=X;7%RSHF,RZM
- M5@:/<F7!1-[K;6:$N9OTP=8P EU!_"O_(TX@Z<3Z<W+LZ+9/.]\Q%&&UH=P7M
- MGIFV=W3272P<)!TC,"E[5P??E7TK0J5:.8BB(D"86<O20P8 [J(L\M#%R'?TM
- M400K7BRP5R=MQV9E"6))PGS4[)JA%^.UY%PJ)LLLLM%JT-$0_07T1I+5A<H7M
- M/M/;;=(@0 )GG#8M(P4.BYYN *F[K5]\D.5;GL9>/F@@X ,,[<\<3>/]_ *[M
- MK0;(#0(83AL) MVN9G-X9RE[LB*&F^,]CIDR#@+>?&&^_9UK0DW++<I+[N9-M
- M#N=0GL2F+ =4CN=67B=8KN5HW.5?[B%AGN4I76%ESNE<KL8O,&A/LN8@\ )[M
- M8@>2G8=U?N>SP=S7L\72X\6MIB3H5P36T>%MFFSXEGK7$^+RP08D7@8!"DT M
- MSF>A>69(SD_?E@<TIYYO<,>1:^%X_AUA$"=#$HQ/&X5/(1S!QB(W+17VQF<>M
- M..+?=7<BZ@+$3>O)/6Z@'@.@$LNU1);\A =05F+[LUWWO2?^MF%9QLP%A,MMM
- M N"$9WAVQWRC<B3SF>(>GM_:7NLM71M1W +_PN1.'@9Q/N? Z@,<+^GA.A_3M
- M! )ES@4@E L?^4G?>:>_FF38N]L/N?A6,88Z_)FWNFH+O-N\*LC[]$E;X1GM
- MDM9E8O0V'1:I$A\4M9N5<LB!W4TO=H8V_UQ(GX&,%B S/<]F#<J,/AOU_)"+M
- M?'?/?'*P?"I*GF>VY^*[&>"YK&>[?&J]_"=O@'CBO8#$;,S(@LRM9"G+/&+.M
- M_.!EQR+2W$TK5@;6;%W8#!O:3 ;<['D59L,4%,[C7,ZXC#Y9KL[L[,X&W6ZTM
- MP?7U_"$[5.%#<+!?4:YRT:Y&Y!%(A!>J?Q(V\!(V(!,K 452!!,AP1(7@1A9M
- M9/J>L:]?U$>4$;!=D1E8X?O(?T,@#;%CW/S@8SZQ45P8.QM"30,="QMXND<AM
- MVRS8;[<F2T@I"]7>T;*,]'$PFQY6W1Y8;;.6\M4]\A\[.];0#TH-LF"C5#VFM
- MI%!'^R%)&VFO%$M/:^#8$K>62QC%+ND1O@1K!9.VM[7LRC'Y6E<B;#43LN7;M
- MSM:9:%QJBTVXB;;%3>I$W$I1UP5J32ZFAK<4A=YZ%'R+&/FM^0&X[LF]$Q6DM
- MPE4!E%BUN(K.K&AXD"NAC$"_Y%" 140I%DU/]T"_C!*Z[M=@V18@!5R,%**BM
- MNM0%ZW(7$Z.KN)38)3-DRN2@*60%:B0,W07"9DMMH1@_A6<$KZ%B-89'\2H9M
- M)V.I*"^GPKRB2LV@*CEC9_@+^' &,4L4?%U?97LQC2SXO:8&%:@:XLNQE*^VM
- M<K["1OHJ&^N+KK@ONP*_](K\\BOU*[ <P<*")0Y+8NE?C*4( ##%(< <!P&CM
- M+)7C@&46!=8Y/$L#JP^AI71$L-)"P4Y+:LE@4H!V. S7 EN<RN[B*>6B=1$/M
- M$Q8W> OR\"W-POD)P]2@ %3 "Z @+R 9*L-ER R;H3-<AK-A"JBM&;8][DZKM
- M>X;8\!G^%A&'[+X+#S #)P)2/"$TX -: S=,=B" !T"(<,C$7 Y-(?'#AWRM
- M@!,!8-QA.31V[(Y%3#+]9 _A83Y,AT&!#/@*,= /_6$W-'<5#@F4M=)$9,0)M
- M E$!7&,(+ $"=H=$P%@2$E! [-BQ,B "=D "2(:Q(4E!K>JQHS(32-J(AJ*2M
- MR:F-U!"'0FD+ OH""4"+.]2%+F(9$ *J) ]TQ(_X D+B=4M%,((DF@D$HLA6M
- M(G[SB0_QF' -4E41;>)RD!]':B>"Q(CS$T<BA2B)Q^=(E;,2M"=2!+&X0S!@M
- M!\01AUC:R 9CV2QVJ O!J%_1A4B;G"*+$+$7*H]_41$3T'-Y6ATQ0E'%AT@NM
- M$$L1& +0"[-4Q+SX%EVB"A 57PR!W*&^"+T 8\D0B_:L!#$3.D!C0%):#(LLM
- M#R1FJ,9#;GS#4,ACA1&!I)?*N ;\&5D$BQZ1)XX;%H'M/*,< (WA!S;L.-]TM
- M&5,C2*0]A4;K[#@\5'@.3VQD(5] /M7&S-@3"9#;:@,_B--$$_9Q I[$"0 !M
- M/T !S AVB!RG27JQC3UQ*,(7%9%>I",XA"7BT 39HCF '<^'_'@*F(B5$9.@M
- M\!3@TADP2I4"^D2*T%@L_$RE2 ,H20YL@6=% W! %RB/#)%"G28$@HSN(TI2M
- M%:$,V.P;?G(HZ@!T^ 'Y1P& 1'=$A!0?(SD18T!^H( Y$ -8P!S@5?*%(2+%M
- MTO8%Z$"'))%T0 :(Q1&P)_B,(P./<6!#GL@/:1VF0XF, 3V 0[* $BD#<J0,M
- MV)$F<@O @"[0 WH CQ2270 ZYC,,J2%OY KHD#SR25J'5"&J6D.+G!0O4HFQM
- M,QGIQ'C5= @!&Q)&<LD8P:M20/[9BYR1#KA&T+@'8 /B,6?_1T601CTVTT:CM
- MV*F-%X\V2(]RH\0F(VDTC4-!+,*&/G#QLMZ:HH( 2\#S< A69$'J.3M %-M
- MC@%!.1OV&,9:E"[ O9$;,]">OH0.T %S8-G 5Z3 BAEI%PQ/H#-3<J9!B=)M
- M2)$$ 2> "\B!$V =]B27& ^MT2'F,5,Y&^!D>R(2*8"$\ !WAO+*'*8L X[2M
- M3(* -FDK^V0X(VWD#&.U2CMTAV*E&Z"5"/*^'(KDPBNC9:]$E-9114#*VA NM
- MI8,?BPV\4@,A2E=9+;G M;0.Y3(=#LLS-!LZ8@;REK"A68Z'53DH^<G/81&6M
- MTK*1FUNI,10&I21GY$P!V 'P0R*83Z[\C)*2^P1,.VD9[Y!JNW@4LS2BR3NTM
- M*A-F; P.X(1(_$HBH\=<&)\<#\&A4ERJ-G"RBF5L*)(GX N< &A)018F_ B5M
- M/FP*6! PPR81CZ2DE&3&5:;)-5DJ91#]F X.8F?BL>H@VA"/P^R,NK(ZB,6$M
- M*2)C8\PP JI#"]#%5"4#:(!8K)HEZ'%@@2L +8@ 1Y&(67-K6I&O219MCAP@M
- M Q\')&T!L4DVI8#9M!9H,PEHS2ZP!:YFVOR/"I-AUD<Z< 6> MPL7&N@9\(&M
- M8C(R=T0/"(L[@@?0S;)Y-HN-WBP"I"T-))=?9SCCYAK8 FF ;P[)M!@K8<#,M
- MK'R!$WY,(<_9./=$D$$#$A/Q,,[8Z 9Z@.MT$:3-#?@ R.D&^I1UR$ P2%YVM
- M(2Y !\[0N1P/YU($$$_C.2S=YN$4.W,S"(Q-RHDW+:?6W&M)\EP."8$X-6NFM
- MX&R-?,<)5#(C<"?: .M$DRK &'T!139'8N/MA)T*(&!BR.9 '?C.^JQD<R2VM
- ME4K9R>MHI^WD;[C34$A.Z5DW[V80R)O7\WVV !5I*%9 #Y@!XY(VP,D3<5]BM
- MI//TG-%S>MK-RIDV6T!ODI)=X#V( !T@ JP#'^ #*R\!4- M>4$19P8MH!STM
- M<GI0-[ ">%4([4(D5%F"$#$0V-; P7R3B+(K.DCKL#H19V_:GXN3U[F!W.D#M
- MWF?N; $/E/OD/%A2F.JGGKF?30PVM%#H.3DW:/7LH&Z@"R!1$R0'JJCZ9)]:M
- MM'.ZT"YJ0!%H$6@![U.,=L_(*!VP7>%\F]0!+J8(,_ %WD-LW*,/ B5]@=@)M
- M&W F'-"9[V@.[$K>,SM+4.WDG3P D.+',@#E3,!Z4)0U"EERRJ))0U= !!52M
- MT\$-1-(Z XGZ2 -,:3T"VR!,)H6'^9KW)\B#5'N457*2E_E"7@!V+)-LCSBM
- M&"-$9?R@4JP248I222I(K<,LW0+)I98.35TY1B6H+$VEJS1)VE)<JL=VJ6K,M
- M,K<4EZ8X63']?,2RG&G.-)2.TE):3%$I'T6F*T"9NM)%VDT)I8$ZFKUIG 92M
- M2JH>+NFQ3);UU)S2TBX0 GJ M:258C$!Z,LT>4?) J8I>^!F%+29CH;\.5KM
- M^Y=Y\EM.AV-:2ZNE"LBEUO0V7H];>E&W*0AYIQDGGBK42FI/,VFR_*08B\P$M
- MS&ZJ+L7I2#6FT%2=0LW/R% QECM]$2%UF)+2>4I2\]D]W:3YE*+R4W]Z46MJM
- M5Q*F\M24PM1S*E/5)#,-J"WUH,94:5HMJ6F(Z:$!E9P)U('9)^VHX92J?#2AM
- M[E2EFBY!@$,];1!UI1[54+H[K</3=*J?D:+V*3D:40?EO8RE$W6J4DM8.0)RM
- M*0C(J#W1D&X971=F9,BE)(O\LC:HU!?22F?J*W6+"6!:VE(NP 7\JM!<IT7SM
- MLCK676E69]I-A:>8E%%JTCR63\= /_VG1G6@>E4\BE#-*4]EJ DSG(+5?;I7M
- M8^4)\*N %2G"0%S!$-]6>$JI%$*MRE:=2DX7JCY%ITV5: 94."E4:RMES:7@M
- M5***U+%:3H]I,I6FRY2FEM7AFE2K*S2]KHT5KC[6M9, SJI9-9HYM;O24TOJM
- M4TTJ4&6O0O6T5E: .M,HZI/$KJ7S=&*L@4I#5=M=Q:NS-9K65A& 6W>I9F1:M
- M&Z:W:J&9MEB[*9PDKJ_UN(+7.X19E^LS9:I4%58^5Y2Z5J=K<3VEUC6=8M<*M
- M&UVC*H15JA)6Q(97Y4I>S>MG3:\C-9^&UD;Y7M=#?/6G!-:HVM<8@%^Y@.DLM
- MJ_SU279+UP8G0P#(%'AT(,"&467)0R&%#S6P/7%[NKTW4!;BF5TUL6VU0@R+M
- MS2I76X <13P[ML?^6/Z)0!IG&GB<F7. :M V:CW?Z,74G)X4A,S//( "MJC<M
- M#)W\2(U"3\W)8\?HG*VS>O;.WM!9.D8'ZD\EK8\MG(& 5-%?YVAL-*0%57&*M
- MQT0Q(H^IW[R<@#-?<E5<26XB;6N]M%IS?WK,$J3N(BWZ=)XE\@U\ 75'2$$IM
- M"A"B9\ ZL" $DCQ+[5=EG@#$<*;:5:MKA&<)=9?V$C:@R3VZ'VN #<BTWE2MM
- MPLG5:E#WZ'LH:C; .KS*<%8K-ZT[.YCHE3VM4 NJ:R<$K[TR8M4,F$E*.5#]M
- M*Z$L8[%1W06!*X.;$!$=F *BTM3"153K;=4=@C*,#XD.? %#VFKA)*R5M5'(M
- MUZI;=OL&W"V\]6&1%M?26U6K[H1G"F5Y(H %X-I\NV]]:?), <"64@Y;4EILM
- MCRW0#*X EMF"U6=K;*7M':*V)I-@AD4 ^V]C0\!-GB+7.C"HX28\]ZBOI;D7M
- M-^,"V' 8(YVM ]*W_+;:GLQK>_%>K+:%)144T+[-76MOS>FX13SE=FJZ23K:M
- M2WW86* #$0? Y%'#N' KK@^[MP^QZ[+:^ E$IT/+G;6^UI!>W:P[+%" PNVVM
- MJE:PGLN'FP B[MM=NO6VUU[<9:ESA2U9)+;0%MDV6.DJ<GTNM#6Y!=,("%V5M
- MRRO][9L8HBZW!?E:C(5K;:[V9$F-%U'R7*5+!G:M(0VW9E+.BLJU:Y8XK^<5M
- ME7D6[S)<73-&C>YTV+:F-^^"6Z<[1AVO5P2XDC=Y]@%<NSWU$-2UMN;63:+/M
- M)E J&!X5$#YE0'PZIBV 70.F")A(2HGK1-PN5 16YO05 4&@!76[ZTM\/PRHM
- M$:'Q8<>1@>X;9Z8OXA$!RP&_"<CJ<GW#+Y8D ^G7-+'?]W!^B0#Z6+]/H?V>M
- MA_=K?^5O_J6_L,$B"I,Q0'Y5R?7].(G"_<:> @QJQAEDS(C(@@DL+17@PN@.M
- M!&X#$C@H+%*J&QP0\*]@P-2!)8[(]&D_T:B(1)\="(N*'L@X!/C.?^!B 2)4M
- M,!X2?$4U5VU$AMDP!^O@'<R#L:&$[(EC(Z_HCB/P@WNP$3["2#@9>D_XT8+UM
- M#/'MC7+@!;>I!?A@/N440@%->,%(X4TB@T=)^NRWPO23)5EE>5_X71Y+/U=8M
- M:I9=%+#P!$2)1+ZD]55FX3GPA!G>%H[!PB1"?$KH6Y&XSB<-GLF3-N!:_41:M
- M S&N562%>%Z:(5X)B(=E[_VA:+411=4V+ ?>\*.(PW=H#M=A 7&'J?"1^)35M
- M-TC\X9,7B.NE\"3$UL$0"T]$G(H5<;"=#8V807)/Q.,M#>4WC92DV!%C7N"9M
- MB[L0;0A718=*.08ZH )4 ._=Q;BX.97BV4"!SQ C[L4HH#=5LCR&)&NK'\"6M
- MCTT$.#M?@9+.$*.=QLKR\LYBVL"+E?&\Q(<'\;?%-N$Y!M(/*_:U_>P0@^/,M
- M:R,U2"43/U6JKC(T>[R9-@@:)D%TX/@.GQ L+GFEH=1LO5@$? &;"6J>L3D>M
- MGNM8'/O><FPNYZ4@%IZ(<=>]4N'YB%U;+!8!Z!@=XMQAV8Y]P#M.GO%X%<]CM
- M /L%^#&YX4R_$V.U9,WTDOVQ#YA" AE $&0ZP% /\J5,R N98;YB80N4OX#!M
- M&\FRV/?:U83)D)6#"^9O4[@+ZV$=<(5+YAK^ L%AWYH; ;%XE1AD),H/N2.#M
- MY8K<A8!Q&Q#&0X$8&V..C(POQ4,^0Q28+\EC(9&(D[+&3<BES1=+Y+O\EO,RM
- M6_,N)2K=&![(<\?NBTVJ$U@LP0H$>,>6Q[%;)LMP63G8"@!Q\*2:RS)_52V2M
- MK#_&O)=])EZFP/]!L!7F8(0?")M1L&OTAAXZK3I!FHJ+X3D6')$O0^8*\0/KM
- M%GDYQH[Y(^=E(Z D-!>R:'L7Y^3AM!A,(ES5<O%7-; -X&:E_)@G;S-NS,Q9M
- M-U/@I>:74M8+0"0B5%XJQ<41B&_6.1$.4WA Q#?H+)N=,P@ K/HPR 07 L3M
- M^X6[Z,QCV3G/J6"R/5_ <O[*KC8$3)ST\2@1\EM>BR3D%7]DN:R2Z7(K]L7VM
- M<@U+GT?Q2J4HQDO(8GA[MA[AN: %Q!DVR2LYJE;HC<Q>-_2%+L-CF,/JYBA%M
- MF5*07AZ6'CH%N&,Q_*$S=(=-T2O:#*MHD\RB=6@"2*)E=@IL93DPASNQ5!X/M
- M*D XW"$83:-E=(P>PZ2-/$8H:[I+A72,.-*/\IO>:%B<D+< KIT#[A@<^]HNM
- M8"^GM(:&TM:A0V=I \U]O#25?LLB%*IV5KOJF?OR'KC/:Y@2*U)E*:<O]!6FM
- M)46S39-EL>QJ3=ROR,=J]2.'Y.^2V_J9GQX#<P I\^E".H )RBD*$.QT33=GM
- MW;N')#)Y1IU%. EKZDWM#)<PB;AL<Q@GTJ:M^Q#/:"4;HW_D*<-@3WQK0IJZM
- MF\,A^"BB3U.=13_F'-#*#-J?\9U6>ZB=LI[QT7D82(\!?[;B6 1J1#R]6E(6M
- M:UU]1159QT6VK9)81QP6T:'%)*U.9D5F6C/K!:."E:6AE=9M@E(RSAX-E;EPM
- ML"YM0E-]:B[2-BEC0UHLR2 Z2N]<:SVF\9B5NM;*4KC&!G!MK-&EE:.B]#-;M
- MMXEM?:M-< D^U4#6VB;6*^NN[]!]N0.^6@N7:SR\FZPHMS;8-=A8O $_>JLWM
- M-,$>H^I:8[]KMZAIAV[']-3CYMWN:%A]@N'BM>ZC[:4E/D2/_;+!\.L5DS3[M
- M8 L)F&UWO?6FI92V%_*BW>09(%0V@Y[#.AG7OFQ?*T+I+FPXESF[65<R*)=SM
- MW< K)M>K^D>C:WMWAUXUW['8!7MJOP=112FQ=E0^U^GS5W5M70.KH_;%%MO7M
- M 63'@/1#=^#FRO[: 4'4;D7I<-ET]-'698JT91O&FDUVH^K9?;GSLF_?;;BGM
- M2)6VSJ:G55M _UV.&W@I)4AE3S'@DR[;3OM5#6_)W:LH=Z"N7-EZN'/OO(RYM
- M)83-(67+.R^1\J^UVO0X3$J/GDM*)6X.K9$9"Y9-"DP5NS>OLQ4! +J$XNY[M
- MM[O+0.\6D[_;+BX@X4VE!Q[OGM>S>^0"[SL!Z-('\];=E\IX0^\MZ7-%P)MFM
- MLEAU>]-N,Y"FF;?H)MD/]5,4;;\M(%CVXX;9>[3U_MZA:VY1]F7;Q') 5-/9M
- M6?V^P6YIH\0J&&:C3_W41U?>!<[ TJ$8NV1\?$H+]XA\,2JX;U*.OXF?_RP$M
- M1Z,*&=)UO#A70BDEAO03*.""XT^U%[9WMI^EHB!<A&?1#-[!D34*3[(J/)D!M
- M<$4V2($VHE0!"YPS-7#:@ )P.$UFX#,:)R-?11K#\S3B*9=&J+^%</JA@OVHM
- MI]0!AR+7&87M@Y_AI ]7"OWX5L?DV=##<_@&&:3_./P$@3EP@15IN:R]FA?IM
- M;DD"+D(9<@G-IRL/]K+Q$?K&+6D<5^,Q<HZ;H3!M NZXELSCR+>/BH#=R\?IM
- M+I.$ V [@'.(XNN&:7CHI0WQ<AG#!@H,! ;J( [DEQHV1'*+3!O29S"FS]L,M
- M3FMR[J@B8,6CMM<5_(4O\;30Q+M0/S-X+7R4TX'TDL2'Q"JGI&AT'7[**,[?M
- MIO@*5M!XW/($<A&:0_.I'!_F';&.KX=C_B@$.2%WT+)\*DGR2][,)V^"GL2,M
- MO!+3\&IL2Z\Q--^.L_PM-^5M/$E)ZYL& 932%JO53>[CH' ][5N%YT#V"M^M
- MCW7X%N?A]#R+@_&;#)"5KTX^X[R2G;_Q-_U#CS@IG\VXMD!R8P'AP0$VG57HM
- MDQ3<Z,\*/GK]!-L] V[W38M00NX6#7HXW]-M&8GO'52T2$<MWX84XS>;DVITM
- MW;^7= +0Q-D<6.^F3YF32YM^JC(L#WW2</^M M@X]7&MIA2G)X #'LH4^ ^WM
- MYQ%*?@[@GSZG/%Z&&@_'&O'D\YI\JV_P&B[=M#9QHW3\'<_/Y=*>NTS:[A9HM
- MR#TLZ:Y8/Y<$W-=B7-CM,\EB@+#'U46"8TU,"[1+4%;NU<<:-FSST=DNQRRCM
- MMD4_'?N DR\P)(*$58^J37W?<BH.&[1C;>3-ZEVHJ:]&-X!ABK=E$B#ZZ42WM
- M"$P.GR6U.@^FTT'D^O27NE<3;U<>#Z.[PV)U@3O$WHOS[ '4G*P/3[;.IC6TM
- MF)SCP5M95LJ(FI$+:UHTBYN#5T+:KUHTHV[1+93_$IA';]P.'.XB1]3MRY*WM
- M]Q\9H1B#,/*8B\(]WA)WTF;<:3%RUWJV?;DC<P)4O>-;OI;NB?&W2P&_Z!B)M
- M /HNI-H=CQ9WX(N^"27B\<E]^K8C\\*NG/,URWV\CGUHSTO^KMG3>O+LN](UM
- M! Q<,M!N$<7!A0,)5Z.W1>8]T\YWR.7<>'2T4U?C^BI->\KMDZE= S6?/4'8M
- M5V9:]*\,&TX*=A+/WS5W&A?OS7RC,^\]H!J3Q46_Q5UIQ%-2 I_7:T/4O:NTM
- MX<_N],W>S!GJYB:<7_6MVS(J ]3+:8</W=8VQ.?WZ*WD;1*3%P&PW;]+2T0IM
- M<JN\, JW$?;)*XS3?FW_=1D%X4/^#%5$H_K!D^R0]_+5Q:@>^4@+YYD\:1?SM
- MBO?#H_8A*ULW;YT'-UWHF2_+&F_1S1*.EZ ZOL0;]A[/L!EU&:6?/MW3+/5MM
- M3'UBN71=[<F3P,]EV:X\:3LSSNR9F._@;YE>A74 'UY*O/+'U_8IO\:1^?<NM
- MF6JWT&O=2,_1]?QUH)F(!R36OQ_8)J-C>&_U,7Z0SW@MNTX).)+,K,'8J7,JM
- M-&OK(:=]5^[ GI)*W#U.YOTKM ?DP=X8S7C@21:==>7F]BYQ/Q<(@AW!O[ULM
- M%;GBOO->:Y(;;4'WF+?U*/[2 WC<"]E%0+HG]XH,MJ_B=Z/N'_?-]?1157'_M
- M;<8MC86$EJ\-0GZ$U^RRVN8+?C*[]_@Z8=.=4)T3';Y1]=IZQN&S %&UHJ<9M
- M"LC<#+^B8]W2Z[VO;ZT'[2B@R_.W)0_H[_S)???G6Q^K^H9*B]<PNH?;+A\VM
- M0/FAF]H;.[WWM?E^TU/MULW6K[W#%^1N][QGH(2_LYU-((>EI'O>/W9?^YJ1M
- M6<S&O^LYDS-C+U[5[]!E(^H:&.I+UP7?X-]M?#>H);]\'_P^+R:'?,WFL),<M
- MU$=L.AS3)S:K=@.?4@$7B/@+2S[14PBH]SN;Z^^C_Q[2_/3E^C5<'YO7S[Y5M
- MZ0[^'OQ#WO OG:/^Q?-T-YWYM,&A.E3\WLGE/DR'PJ3^$^L OH_U\;/AEOH"M
- MO@L%.<3&$K&^9E_4\+Z@&_TY[@>&_=)7Y3[=D0MWAT[XB?Q"W?V/GLY&>DL_M
- MR1%_6OSZ0P$#+ZU('57)?L%U\&<_HU]?:G_H/SWR38N?WP[;_1^=]_=O[.F_M
- M?7] 2OR4#H4A_]1^DH4?;L>VR8_%J7KB!_+I6R#5AIY^_4.]$Z[[63M8?TKPM
- M7_J);!!%_8B;ZK>5D A[@O^5]75V)1O!%.]Y2Q-4VR>VE7SG7:PW\FE=:5^@M
- MU\'%?I): QB][73"WGGW5JU))T ? %#]4LK>D,#LQ7P,X(NW)7& U%^;] 'JM
- M2C/3"&C<Q58V7?TW]XUZVY_^9^I1)*@>F34=C#8NWLT&XTE[DIXMPKS==4N=M
- MQ12[J7QPG9VWX9U2TQ;,%^6]=ZX6IC<O_7GZ'M2V\EEY]9[.);YM2%O@E]<!M
- MEDPOX&<4 HZ B=U3=P).@9+:KQ<C_7D2UZLWZ(%$YI4$>-%)?S*>Y4?SL7U4M
- M7A@(BH@ 5MK:-QO8@22?E29"<6EZ8.=G V9_G%@..-/I -F74I 'E%5-%EE M
- M!3I4&N"6! >* $E?R<1+73;M',.3F;1_^%B=X_--?40;IR(>02X!CN+Q\$0(M
- MHIQJ!P":;EU(U5=\('\16"@3"W9RQI_7A]*!?4@:RO=OO1 !H APF. *N*#RM
- M]UXL9P+7 )AC="!P&LKG_!E<T5\%F,SE:ZJ1>>4&$GY8'O/6E71L2>"M%UUEM
- M@C$2!]A/>8.]$C@(V"F!XZ *6 X^@$42.JB!J(.4%COH8+F#W.##)@\B@>N@M
- M.'@/"H$KX /XA;QD1R ]R!:Q@]%5X%?^57PO6_K7]/E^,!OB9\1U4_3?HY 6M
- MM2<&(2'QV#""49@C6.IY8&. WI?2>5\I%&V0*G"$H=]4)A(R8&75XI=615<5M
- M8;^&$>Y; YAUL!&*>OC?V?8(@H0,6$DX&YR$."'HYQ&*?BRA9R4,SH+UGI2UM
- M9KB"#\8N.!M4@CY41-4') !?X"9(_4&%QUL?V 1*=!*7((B+G64E(%0G#FY5M
- M]-N0A?5 5.0@-VB,*4ND33+4\.5^4UM/AA;B@QR@"<"\M84."^XWS*5$)IQ!M
- M!E%14&, I+<7#GDO%? G']!/;YX?Z 1^6/+;-CC'W6YD5& H_.V%$]W\I@#.M
- M42CA4-BJ2317!E<GN)5JCUM_\5Z@8#].YZ7(M%IFF[G6]J1/:1'&MV D<F@4M
- MV;:&$1(9R+@6%&I_^=]JB!QQ3.E'G58TM0&DS6[(9H!IW]PVV ;4:WG,(N=]M
- M=6MD'G!H&8)XCI9=-P?PA*5AK#8:NFRA8<PV@J5@IZ$#EQ9RA_A3-PC="4QEM
- MH=$''C8Q(L Y.![&?N9A:=C$87E9WO#&'AJ'[B'[9.^5 7> /#CS?8?U87@XM
- M$*X(YAM]AWADAKGA#"8<JCN>879X'OYR454(T 9\4C.?MS10L6&]839GB=EKM
- M11*!J!-^A ,8 U8LE5C#H0\ P*%B&>)MV @6B*(?2+@2EH9Z&P=VJWD\SX6OM
- M8!I.8SK=J>; 38B*3#[EK(U.[-6..%3%@"UB4P:J\1V#'_\FM1E\WN'_=WNAM
- M@EK=Q$<DYD2:W;5VJ0V(JMJ&Z(4)3:YAX)8=RH9^5[A7R3QK&A=9I)^ B53BM
- M_2<4HHA364TW(B)?99N)V!&BB4!:&^!+U '*1X^G(:J&!N(-IB D?PA<::-!M
- MN J6&T[%GBB$# ]L.,*9 &OBH^ 0)C,W';!B;+T')L"?6*5\<RK>B[B0W4<SM
- M(EUV&G)8PN'#=@/FA'CBD2#,*8I\83+S<"6*,AS[YRJT$M,=:E)6E61UVH-(M
- M!4YB%:([1R+V '<BQ5;J,6#%(=C#Z\B)9D*=&!O4B@S/G!8<SHE<Q[$8+&8<M
- M=PBP2">F!<0AB.@K'8<BHH5X*^:*=]^G1!UZ7Q\B2X6Q4(NH8AY3(IJ)N*&5M
- M.)7QBO44B!CDB4G4(BO&(2"+T"*&1J:EB][BNAB]48NHV+NX+'(9/@ JYM^9M
- M:5,1NK-N" JC2-Z!)\0D;X O0B(PA1 /") 'D!L'@ID&+EJ+<!BVR/WI -MBM
- MG+$_36F:'^K4E ^Q^C\9))6@]6C;9^U&CIA_T%AD1J_R%01!YYC((3R$B5M
- M]7.5C!E'':D'00Y/EB1^2:Q8-79"D5$!H8'6Q@EE/MO)9,.%4C6:CH@R]HMPM
- M6 IP[%5_\5H01S,Z)B'<--$8NEI1H])HI#&-EYC3."1]<SDCT]86*7=)E[LHM
- M L PEMMV(NA8M;<6%?2H6PRXQ0RQI5Q*,"7 !XQ,3BCU;@S)DH]X^CT,VY>M
- M[F(7XL85C;?2T=B;)(T]XM*(BCV-:E74&,81"7-C\D?$68V0V)17-H)C$A?:M
- M^,CYBGU9)W>>\6.:W4FFB\UB3%G,R"<N+5880):3!6YZ%"EELR5*B^/7J.<9M
- MCE'C-^<X\G/AQ^H(5IUP9UZ2U;U] 99>6I@OMC?-!WP#:FR.CEX5U;W5-V,4M
- MYQ<9@G ^E[\X1WV,IV-0D#KFCD-<W7@SF@ YX^L8 L2.8M3LN(;5CAG([2C$M
- M#63=H[@&E+UBPF/3*'&Y-\Z'>0<V)F3U33J7W"4>:V/3.$<!@Q18,HC D8Q*M
- MHM!6#-)GX\<O6#V.8=%@EPC#5%EDXIZ8"[X7*D#ADQ9YBL"@VV5W15PH /^8M
- M G")(YA^$B8:1HK,QU7]S7E?U8109;%[B-?.QWCY?P!A'D=E#0DB5%?H,FU>M
- M)B0,V86D -L>QB+WV5F?$QL50UU/,P"R11ODB'<(#_E"44\'5)NU0 %.*!\-M
- MB7Q)7#+DWZC?*8J<8 [)4NV0@58/24 AD6[4$KE=S09$9$S3$IJ"^.!-1\=YM
- MA;4!%ODV85 ^Y!<E0\D 0N3T$T;&-F-D$SE%7@@BP%H(]\T&:N3S)#>UD4EDM
- M!T4#Q)$82QAI1 *2720<64=N>2WDJ(A'VH5H)&W01[*16Z07%4C*4(/D%ZG7M
- M53)IT2%92;)9'90B:13:D4.@Q!4?5G\ZI WH2:Y9/^0;50,0DK6!(9E%'I&6M
- M9!>928Z2C*3L%C0F,R( )/D[J5"\'P;GEIQE>0#P*.?1A2-<'DGA 9/!G\;7M
- MA0R3;4 QV<*1DEL2\?C>Q![3URH)0[F1U],@6<CM4KHDML=+GB+#PALG19:2M
- M74C) ;F8DRC4+@4TBI,B%/,X0]Z1(M1>)+SMD9/D&O5)MI(MP"W)3%91C:)"M
- MUL+]DR!<HZA-<I%*9!!I5-& ?&"T)T+!C\:C,N?2)0#AI#,I I"39P [^4Y:M
- ME.ID\61"M9,LST:)P<F3Y^0N64\Z1/>DE/86/I&NW$"Y4I**IV% Q?3QDL1?M
- M;2!!.FSXX=AP0#J2(M3T5?@LE&;-_?BB.8 KW.!XS]F4H0Q.";%5D!B<3[FTM
- M&%7.8U1U9 43#M^QURO*1DDE&K)4[I2-(AKU4Y954:5TY2/65B@ M@0BWI1:M
- MI4[Y0"99ZU],\QY\E2!$6$D;H)44)%?)4IZ-3F50 %MY=Y?;ET1#OI"471?RM
- MO<E8?^4).>'Q<4O2;0=8BE XY--UU4E];1+P5 P23W(?4I;9'7CK&!68^BE/M
- M=$ 8B93EB)CE?59T\1["XV)Y0UJ1495H9UH>7NY>GF?A-90NI&%YT[!$J"7AM
- MA>$95#5D8,E:1H&NY10(_]& 2AAL !*!@A!=?H0@!06YWC'D&)J69V00F/+=M
- MEI;':OFY\99DGI3W9Q67 H((Y2XM3T9>";*AD7Y^'X^VB3!ZV99?J5C*EH,EM
- M>Q4"%)8VY#7(V"%*N262Y /X4T' "6!)Q9=#$@_@3VD!T)6WV/!AEX">I[&CM
- MU90YS\K6^H670\!XZ0_6!BXA>/>B&9CJ%X)Y8^R1RZ5LV0D^CTD6@"E")7V:M
- MI+^$HY21S&5C26':BU64AGE#[@#;I4?980Z"$*8!F&!:"O8@2Z4-QG^L7FS9M
- M7G:%UL%_F7LX*1%=#$E@;C5_H2IG8N:60*5+\Q)ZBZ6EA<F\Z9CVT4(78&9YM
- M':8MEF2VER(FAODK-9D]9EN48OZ8><U<V$CFECZFLL1D&@D&4G89TQA57:;ZM
- M)F3NF&4FH$=DCI&YI&II6.Z6+U]OR?/Q>9V5T[1EB5?1)0/Y-1J.5F 7TBFHM
- M&O[C\H=#:GT#5>$3'9YT3F+&]SH&FB+ D.AH+DNQ()H47YI[(]*UUD!*/"@ M
- M$#A"<GG0)9CI*+9[U&6S9_K5F'UF>ZGM88,'5EH6X- RN(>?$2&@?"+7NC=JM
- MII!2X)V)\@E\[1O@9B@:?'02""%I+AA%XN-6*JE&P Y*IV55#S/F*;A9[EZ7M
- M&EEX&1J%/YGSIKUE?AD(N&==(%^;I@))PI5[QE8<B28MB-VFC[,<CI5]G7X%M
- MBSUNW)R&Y==)5^QE8%E%8H.JD>&AH/09:L;0T?3@!U[<<4D'1$?4)+>U1NJ3M
- MK"0W^48%D<2<,@<B;EX'92VI1 Z2"6<D.32%3^-3^70^98<@0 V 9D:&]-."M
- MF'KYD5IDP7E)7D]PY,;Y9QF4LR0BJ40>6QMC^TA%KH7S9"G92Z:-_B7OAW(.M
- MG%S4/FEPM@ WP)=E4P65DMA0&;TUG*"D#(5P=B&U7R%7<PZ=*:?..7*^41 GM
- M#J5P+ITL5-,I<G:1KV3$N4>"3WJ&/T<^%1T7YY&8S( T=87>7*RE$0G/]ESM
- MMIQEY!.I3'Z4&Z49Z4LNG#8GVFEU;I-/9PO@'YF<O)_'B71RF5:FWYEV[IPEM
- MYR+986F:LN,>PQ.!$*TF*[AFU#AZAKD99RQI2E@[:'8AA6G7,/9J9B70H-:'M
- ML0"#?N+Q9T"NE1M8 F!I I9; $W@'WV1)&2&9UJJGKBFG;E"=E.6Y_]AS)V7M
- M,"0$6$U-2,X@=&'P@!!1%7 DG]!)9AJA*" 4FV*G<AAGM'*-8J28IYEIK2=NM
- M^7K* #A [%E=JFE:523&(JB+51<<0'I1@!)>!X@7J@IO )4E\<R8S68 &> -M
- MD)'&FL&7=)X(X!X(9'X*BJ<2IAIE'X[GT %=O$=S2'S$,-X:C*=R.?TXF\4@M
- M_FF>-![P$9KB\#2%GB?"UW?VAUG4X)EW%I[1%>B)PXF>%MA.N3&>G@RDZ@E+M
- MII:AYO19?;:6UV?M&6_&@3.>:K3Z31LA1DX$?+I:< #Q21O 8\C'>#/!6Z4M
- MXPL*&]"@/H#*.#)NC';5E$8(@I\FWP4($ITBYB<QH57-F ?9E!9]IIJZY719M
- M9Y:@/R>V*5L)GZ6A<%"M+7?,90O(2RF%^N>)DI$\&$?ADKA9&J !#MO#@,:?M
- MI]^26$2)'1\?!XD_EED?$[.7!JA9>*<;E3EM3J@DO"DF2:!=))Z53@Y@VYX0M
- MVJA-7F#/I! ?#6733R,E':@!/4 :0-JH ?,EY*0&^$Y2VKHX'@E/@*@2J09DM
- M3Q99EQ;UF:$!8"?:07VBUASV^8(>:L)!9^:$JI\_GROJ8I6A B0M* * H6*HM
- M+7,D.(7>4@IX>9*BMBBTV=E9> D3U46CN &-TU!P!HP!+ #Z=!A!!7; ZZB,M
- MLDO BG.IC-H!J:?HE&$U1\\1>W6-9J/9:&TU!-!*X!06ZGTY:0O@=W<H30?3M
- MZ%Z5N45W]IWV&=U)EK;H/)-!7!"TUHO!R8B6%PU]-UJN8>9HG)&/W7[C42V'M
- MC&9P#HW08Z@U:M.7+@?%(3- "15WWT%4%)FOM3.M 2@1KA413421@[R4S$%GM
- M\ASBT5>B ,/FG-8TK6$A0$#*>GQ2MN&OIAD*:^^:_;2NH4L-V[!8I(5HFDT-M
- M&JEY2ZRH*4?2B7W$Z-I1&2: ?5+]EJJ1BR>BN0BD<8;D7Z'X&;)TR:=V2!J>M
- MFS9BP)0:ZHI7HAVR0_@\O4_RHQ6@/DJ$NK)$*!$H04W ^]0^@(%9FOO,*Q6!M
- M1N"5<@; #V00JPP_'8? <A(0+&]I7KH8S 'A"EG$!1A#Y0$)0BR\ &> L"7M
- M/J5_Z0L0F,(EA*EA^@) E,]';/0"2*:%*5\*F=8)&&6K0YDZII?I*T,6]:4NM
- M46-JF1:/S\=D6H*(IB] 9FJ:2@>-J5[JFKZFL&ELBA!LI6!.P2*;1@1@Z>LCM
- MEHH$9*E(, .P!/%*%.&LM 1K*4G0KMRF74%<VJ_,I0!+75K\F!''#W(JG48$M
- MA^DGIX4,8TI8=7J6@7*.SS'$EZ( ^ SQU 6H %P >!H&M !Z0!#0 F@!7P ,M
- MT +D 'S3>9J>KJ?MZ7LZGG(!3N-O0P?<IRI >+J?AC8O K !61NJ&GZ\0*XM
- M *AI#S#:M#J<%6KZ*1VHJ.D7 "6D%%1 ,E29]D0B4D^$FGH!& L0QE*AIM./M
- MA]I-@:@=:KVXH=:+*.H+\!%=J%[ C::B;JAF6H<*,+*HM,%'E!DYIE[ %J">M
- M:@%=@(AJ AQ#+P"'6MJ0 *Z.A.0%C !%*E_:,OJG?)-^>I^"IU[ #G"?YJ?BM
- MJ0JP [P ^H$F8=<J1*2'\.DJ@"]EW\JI3HL+X"7ZJ2"J2Q)>2JF=@'XZ0N@M
- M7"A/P-: "J3.6BZ "N#'U*D[P)=*I/*E>>J92J262G-J%%*G^C%D*J$* B@7M
- MJ.FLQ:1^J8AJ$W+B0"$M"!("D*$ <^H18J?R 'BJGDJF]JE5ZI_*I0)CI=REM
- M6JCR #T1HGJAPB"+ZIG:J XAC^H1<H4!J8YJ$?+N7&%P*NRVJ;X @*J1^J4:M
- M(ZEJE;H%R*<[ZA<0GZ*GP:I["I_VIV?J#D"DPCC3:;/JK,*F.T3MH#($ 2$#M
- ME?"L2@1P 0P0^^BFK,^ZTIO.!+//#!"<2A$TP5KJ$60%7>FU&A$HI_X*74I&M
- M/*<#2W2JKJJKPU"]6AH0%VK '%'][ 9XQ,>B_?01=XKW4RBT3.$/(F&9E3^,M
- M"OJCF4T2[,\ED;/D!YN$>.9)K!5 B_TCM-!FV!HJP6:,&*R$;_/_-"VR!-0RM
- M .$2ZT35@@#E)G>?Q,.U/$#)1 3$3(PMSX28($V<"=;$VK(!;1-OBP=T)^0)M
- M(!#=,LHH%"00HI"WL!,HT#!"*:Q ],2FX *=/8:+#)2XL JN JTB*S@N>@_0M
- MR@-9+@]%\[%A^&:<"Z-$01!!]DM'@029+N$"ZL($F11.4$K1NMQ!V$OH@"]4M
- M07/0%=2]W!0Y11?$NWQ!/H7%( 8)%<.++E0'I4')2U/Q,K1!B(7S @=-+W-0M
- M]1(TL*U>102C!XT5MDL?%+Y\"X(06^%6&$)C R(T5[0OQ<1=X03 #?$+7P$)M
- M 1:BRR2DOT05_$OAD DI (Y%)R19%#"AT&4Q"FT.I=!G@0H],*K0Z< *'0$5M
- MS"NT6L1"',QKX<'80G8K+B0\X!:ZA5S46Z@POX6]ZKRZ!GKIZ(./YA?SJEN0M
- MK6ZK=$&W.I:^/B+!1V #G*5_@7!J$Z@^NH\-(*ZFJ]5K0\"N,J=<P1AQ&<"KM
- M=ZF\FKXVJ\O/\_J\0C\72S>UKU($'HL>,1QL/R.+P"H=$*Q/C<%*_BPJ($?,M
- MDO[0+)1$?=#^/*SPCUCC27 _8T/%>I!("$-+QFJT;*Q(2Y#RL:YF(NN,0 MM
- M"K#! =1+H*Q:6P-D3'@M+>LR(;8X$TR)V3*S4A,8T#6!:MRLC4<'1")\0.'$M
- M(O*S[D""1 E$PC8*12M.LHG,$RU0"\.TQD#^Q RDN$2MC N.QCU4K4!LY4(BM
- M7"Y:*[\1!/T9%"S8*@F1+MP"V;H$F0MH*TJA4C"N4]#;&E/$K0'#W*H%,0IUM
- MJ^]PM_HN81#&P+<2%<3+SX &*16!Z_("512N;U!@% ?-+HJK'30TX$&.:UBQM
- M!T6N9L4?A%:0+XR"Y5H(P16:*_O2NKPOGVM>$3D\0O0+Z6H$\0V4T-^POR@6M
- M_LLF5!^XKI\0P!"[8@Z:Q0)C"H$.MZNW ,'HKA,,[^H*73"JQ<N@P< &P6LMM
- MQ#L4KR),+D3")*_7W?+Z/=BO]FHQ= QE:IQ:,Q0-34-%@ ]1PQQ-UU SN\SRM
- M)391M9-KN C3 B>YQP!H\@5LD,V:)=LL&M#-TF5/J0K@R%5_*M@$F5/N15O M
- MB;!P''TIP'U%!?Y9K9SN5_/!!G[ . M@E+/GK+U6_;6,#$T(N<]"'X(3(I;.M
- MKK-J%4&K@O%*[:Q2B13%L[#$/.O(V;,1%3Z+1NFS#-M".XTQ9+*6",8L65L/M
- M;1L8H9!W9$B!$,Z.8 ^M Q9'9"7^[+ T-9TW^RS^"NLM#'M&3#3PF'I+ 'WM
- M25V([BS$!L_*L[:<3XO1WG[-Y(7H]!5YE6,_RYB0LV2"\M T#K0BX]-R(5:.M
- M31DAUM,^?50M&,+0>) 9"% KT0ZU%6U1^_0=M20F_:340H17XU9[B8&TVN%(M
- M.W1=M29M!4&]I;1DP$J+/EVU+JV<DI6 GAF$34M"Y+0 K3^W= BVBPF<\<]&M
- MM34=V07.(AX5I%LK[4FE<-&09X&":*?42HNQ$+91K3]'S[X'G"TWFY,YDH/4M
- M>[ ^L6B8;<GD+?D!%:1J"]D>D*5-O ;7RK4$TVG+[]!,(IYTL'"< 2Z".6?KM
- MH0"V+4^F) 6WZ<=NV]M:!\J%O9,J7$S>4E/F@ZX(D5I3-H7<H-KCW8@<F0!CM
- ME'0+D$6.R(+-:-VJ!]FMX'0^_G/;8WBK.JF.V2/Z%+^)1<K;BK#26J#![=0$M
- M&?$E5^G=!QGYM9&GQ7BN!;8!R[U"ZVW*QA.U%.:0!:8EN6 +CF;&-;T_:WM
- M*RV!1]/F-#P@UU$QK$SO0238[; .I2%6(WXQ8/27.SG]@)<#DH;[?H&XH,A$M
- MV4WQ?^&EB/O]W5\I[H";,:H2H.T MB)RBWU FXB4OHE*J74HL]6 ,1YE"T**M
- M;2F4FD@Q]KCZ[6J(V0IU0QUL.]4Q<$AN.MO;47>9;705VIJSGJTC!]K^MS(MM
- M8PN'^;0=[H7(A@VY"Y5I&Z^EMETNU_=_4'Y:G&G[Y#X%*,":6XFYMOQLD?M@M
- M^+;>DISKA<FV#%/)-%#%MQE@"6+<H@&^[808W-J$!:T85MP.";PMH(O<7@>+M
- MUJTGJ35EX6)-IV^53&)MB_ %0$N4DI!K*TZUM&V?1-?6N(B'=AM^8&%58JC8M
- MJJEAL$%3YN;JN".8FWM*M4E?@)N;%KFZF*YG)JO!1:NNGDO2NKFUKEU;@$ EM
- M*ZV=VZK%MXA'3<?7.I#*8 (WDY&"G,E==NL:1K%NJR@'R+<4!'YK>[!O/%JIM
- MBY7>&OQMC&+@:K.=K3=;00BV..WB)K'!B:QNC?@08KOUK=:FSHIA.]Q?E2I,M
- MN0'M9UOHFF&I+3R*>+"[VF[*^N[*:-'=G@NBU;HH+;"[[YJ[<T!*Z 908,0NM
- MJ/O2YK?]KM;6[;)%]*X_E]2-NPQNF7CNYK@>[4/8[J)M1R[=Q?+8:KB:&V:,M
- M3$D@1,4[C5FY]ZZ;!^]:*2G4^A0<97.*E*ABVGIH-N]$>=IZ?#EOS'O7[6@SM
- MH=L&J$EJ?L#'6['!N3_=RL3P/ %F /ZF2,VVMI[,*Z?AMI_BF:B4_F\J'>WTM
- M20F[<2*OQ#@)AS,O%*:D7;?K@>[$.V&BPF&[6*.E>M86&W8U0KHT+ZE[XRJ\M
- M6*_8^^J&M7):6B2G7;IAK1L0]A:+:='?RYD,MW+:H3LL'+>-;FK7W I.=1N_M
- MF_$9O3.8Q_;3;FA!+7F \"J\&]*.]@4@AU9*R2L'7(U<;]U;+*( 4.^>._5*M
- M:I#OG<NBE;XD[< KJ3F^&Z^I"Z2E: $O2;NAU;JIKG@[J=9>CA2_1_KFN;7OM
- M7)ON4;U-6;K7.-U[E&ZZY\Y.,Y=N75OPI@_!KIM(]ZH @N\&4==)!U(OS7O]M
- M,C0_+X.V_>Z\Z8.-&_MNNT :L2O.7KXO*8ET^[JT.P%M"NKT!?-K09";9J]8M
- M!&_*O9X$-("Q-:X.I[Q/%9'_'J?QKT.PO@H_S>F[RA48/RB!;1H (Z<O@%&6M
- M$RVKCFF=VL]P 7Z FKJCRJ?&JK!*GJ8 7T"=&JX(!*G"%3 4X)MGP$GHROPEM
- M^T6D8?!(/%EJ 1C^51?>Z8%*_7X!:JH7< &CIQDPWW0#ZP$Y\ ;< 1M#2L^[M
- M, (#&*D"3"('R"2_"(,FC/PV]HZ]L:!Y"9!+D@../!<Q<#\CZ=2IQD<Z=G=\M
- MP&I "#P$#PN,UKJQ@J8*0.I3-#]0%\.$/U$@)*D-\$?SH#JF'PVE*B%1JGSIM
- @GUH%OP L0&NZ ._!?' ?[ ?_P8!P("P(#\*$<"$\OP+S
-
- end
-